查看原文
其他

我用Python做了六百万字的歌词分析,告诉你中国Rapper都在唱些啥

2017-08-13 猫弟Azz 51CTO技术栈

《中国有嘻哈》火了,作为一名对中国 HipHop 毫无了解的吃瓜群众,我开始好奇以下三个问题:


HipHop 到底在唱些什么?


各个国家和地区的 Rapper 们想要说的唱的都有哪些特色?


如果想当一个 Rapper,我应该怎样写词才能紧跟潮流又不会离题太远?

为了解答这个疑问,我用 Python 抓取了美英、台湾、香港、中国大陆四个地区,总共六千万的歌词,其中包括大陆 600 万的歌词,做了一些数据分析的工作,目的就是给我以及像我一样的吃瓜群众们一个有理有据的答案。

我的数据源选了 X 米音乐,写了好一会代码,抓取歌词的爬虫开始蹭蹭工作了:

爬虫一般会面对两个问题:


1.代理问题


频繁地抓取网站的页面,IP 很容易被封。于是写了个抓免费代理的爬虫,抓了八百多个代理 IP,够用了。


2.效率问题


10 万首歌,即使是 1 秒一个请求,那得 27 个小时,我可等不了 27 个小时。


于是我决定开 10 个线程,三小时程序就能跑完。

……


然后在三小时之后,我收获一个约 100M,49419 首歌的数据库。

接下来,就是一些数据清洗、处理、分析的工作。

虾米的歌词都是用户编辑上传的,格式不适用数据分析,所以我得把无用的符号、编曲、作词之类的信息除去(格式统一有多么重要啊朋友们),然后中英文各自分词。


英文需要去停词(对数据分析无用的词,一般没有实际含义,如 is、on、at、which),大小写变换,以及词形变换。英语中词汇有单复数、各种时态,为了易于分析,需要还原为词干。


另外不管是中文还是英文都需要词性标注,一般来说分析也就分析名词和形容词,这些使用现成的开源库(此处省去 1000 万字)。


总之,我都搞定了,我们先看看以下的分析结果。

1

大陆 Rapper 歌词里的关键词

“世界”和“时间”占据首位,“老子”、“兄弟”、“baby”、“money”、“bitch”、“real”等词倒是让 Rapper 的形象呼之欲出。


Rapper 的词里频繁提到“音乐”、“歌词”、“旋律”、“歌曲”,可见他们对自己的音乐非常在乎。嘻哈音乐由于有 Freestyle 的文化,对亲自写词有要求,否则就不“ real ”,从节目中他们对偶像 Rapper 的 diss 也能看出来。


接着,我们来看看与其他几个地区的关键词对比:

看起来 Rapper 的生活差不多,无论大陆还是台湾,都喜欢喊“baby”,身边都有一群“兄弟”和“朋友”,有“梦想”,平时都在唱“hip hop”,有“烦恼”了就骂骂街。


亮点是美国的关键字 Top1 是“nigga”,这个和带有种族歧视意味的“nigger”还不是一个词。关于这个 Tupac 有过一个有意思的定义。


nigger : a black man with a slavery chain around his neck。(黑奴)

nigga : a black man with a gold chain on his neck。(金链黑汉子)

美国 rapper fetty wap 

接下来,为了了解 Rapper 的生活状况,我开始分析一些常见词汇在歌词中出现的频率。饶舌歌手们的生活想必少不了豪车,出门骑摩拜可能有被开除 rap 籍的风险。


感谢维基提供汽车品牌页面,并且很贴心的分了英语名称、中国大陆译名,于是我又写了个爬虫把品牌名称抓下来,然后统计数据库中每个品牌出现的频率。

这是各汽车品牌在国内 16284 首嘻哈歌曲中出现的情况,在一首歌的歌词中出现算一次,总共约有 400 多首歌中出现至少一次汽车的品牌名字。


可以看出,饶舌歌手喜欢宝马和奔驰的很多,特点只有一个,就是贵!其实夏利、桑塔纳等车也有不少歌提到,但一般表达的是消极情绪。

2

Rapper 们都喝什么

红色是国内饶舌歌手的数据,黄色是总数据


看来饶舌歌手不那么喜欢喝威士忌,排在威士忌前面的还分别有龙舌兰、白兰地、朗姆酒,限于图表大小我没将这几个列入图表。


香槟作为富有的象征,遥遥领先,不过国内的饶舌歌手似乎处于消费尚未升级的水平,啤酒排在首位。外国人比较喜欢金酒,国内的饶舌歌手几乎没提到,虽然金酒一般用来调鸡尾酒,但是鸡尾酒提到的次数也是少得可怜。


饶舌歌手喜欢互相 diss(怼),所以他们 diss 时会骂些啥?让我们来看看他们都骂了什么脏话。


这个统计有个小插曲,第一次统计发现一个中文脏话都没有,还以为净网运动成功了,结果发现分词的词库里压根就没脏话的词汇,重新手动加入词库后就好了。

(左边是所有数据的出现次数,右边是大陆说唱的出现次数)


大陆 16284 首歌有 2496 首出现脏话,脏话率约为 15%,而非大陆的数据中,33134 首歌有 13217 首出现脏话,脏话率约为 40%。


总的来看,我国歌手比较符合社会主义核心价值观。我试着把“damn”和“shit”这两个不那么“脏”并且口语常见的词在国外的统计中去掉,最后脏话率还有 33%,比例远远高于大陆。


一个推测是,英文脏话词汇在歌词中更容易押韵,或者唱起来 flow 更好把握。另一个可能是审查原因,早有“in3”这样的乐队因为歌词原因被禁,国内的 Rapper 创作起来可不能太奔放。

3

Rap 里的押韵


在《中国有嘻哈》中我们看到有单押、双押、三押,各种层出不穷的押韵。旋律、押韵、节奏是说唱歌曲三个很重要的评判标准,一个好的押韵,能让歌曲的 flow 更加流畅。


那么我们怎么才能唱出酷酷的押韵呢?我从歌词库中取出所有歌词,分词,然后根据韵母、声调分类,然后得到了一个押韵词汇文件。


韵脚的分布挺有趣的,我统计了一下出现前十的两字词语韵脚:

可以看出,i i 这个韵脚是最容易押韵的。下图的这个韵脚的部分词汇,比如“势利”,“世纪”,“日志”,“秘密”……


看着这些词汇,我就情不自禁 rap 起来了,drop the beat!

双押 x9 达成!以上应该能告诉你中国到底有什么样的嘻哈了。


作者:猫弟Azz

来源:本文转载至摩登天空杂志(ModernskyMag):中国音乐杂志界拖刊纪录最久保持者(2000-2016)。


精彩文章推荐:

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存